

 /*
 This file '_core' is part of Firebird Integrated Solution 1.0

 Copyright (c) 2015 Lincong

 Contact:  
        Email: lincong1987@gmail.com

        QQ: 159257119
 
 See Usage at http://www.jplatformx.com/firebird

 Create date: 2015-07-14 04:21
 */

 (function ($, undefined) {

     var uuid = 0,
         runiqueId = /^ui-id-\d+$/;

// prevent duplicate loading
// this is only a problem because we proxy existing functions
// and we don't want to double proxy them
     $.ui = $.ui || {};
     if ($.ui.version) {
         return;
     }

     $.extend($.ui, {
         version: "1.9.2",

         keyCode: {
             BACKSPACE: 8,
             COMMA: 188,
             DELETE: 46,
             DOWN: 40,
             END: 35,
             ENTER: 13,
             ESCAPE: 27,
             HOME: 36,
             LEFT: 37,
             NUMPAD_ADD: 107,
             NUMPAD_DECIMAL: 110,
             NUMPAD_DIVIDE: 111,
             NUMPAD_ENTER: 108,
             NUMPAD_MULTIPLY: 106,
             NUMPAD_SUBTRACT: 109,
             PAGE_DOWN: 34,
             PAGE_UP: 33,
             PERIOD: 190,
             RIGHT: 39,
             SPACE: 32,
             TAB: 9,
             UP: 38
         }
     });

// plugins
     $.fn.extend({
         _focus: $.fn.focus,
         focus: function (delay, fn) {
             return typeof delay === "number" ?
                 this.each(function () {
                     var elem = this;
                     setTimeout(function () {
                         $(elem).focus();
                         if (fn) {
                             fn.call(elem);
                         }
                     }, delay);
                 }) :
                 this._focus.apply(this, arguments);
         },

         scrollParent: function () {
             var scrollParent;
             if (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
                 scrollParent = this.parents().filter(function () {
                     return (/(relative|absolute|fixed)/).test($.css(this, 'position')) && (/(auto|scroll)/).test($.css(this, 'overflow') + $.css(this, 'overflow-y') + $.css(this, 'overflow-x'));
                 }).eq(0);
             } else {
                 scrollParent = this.parents().filter(function () {
                     return (/(auto|scroll)/).test($.css(this, 'overflow') + $.css(this, 'overflow-y') + $.css(this, 'overflow-x'));
                 }).eq(0);
             }

             return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
         },

         zIndex: function (zIndex) {
             if (zIndex !== undefined) {
                 return this.css("zIndex", zIndex);
             }

             if (this.length) {
                 var elem = $(this[0]), position, value;
                 while (elem.length && elem[0] !== document) {
                     // Ignore z-index if position is set to a value where z-index is ignored by the browser
                     // This makes behavior of this function consistent across browsers
                     // WebKit always returns auto if the element is positioned
                     position = elem.css("position");
                     if (position === "absolute" || position === "relative" || position === "fixed") {
                         // IE returns 0 when zIndex is not specified
                         // other browsers return a string
                         // we ignore the case of nested elements with an explicit value of 0
                         // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
                         value = parseInt(elem.css("zIndex"), 10);
                         if (!isNaN(value) && value !== 0) {
                             return value;
                         }
                     }
                     elem = elem.parent();
                 }
             }

             return 0;
         },

         uniqueId: function () {
             return this.each(function () {
                 if (!this.id) {
                     this.id = "ui-id-" + (++uuid);
                 }
             });
         },

         removeUniqueId: function () {
             return this.each(function () {
                 if (runiqueId.test(this.id)) {
                     $(this).removeAttr("id");
                 }
             });
         }
     });

// selectors
     function focusable(element, isTabIndexNotNaN) {
         var map, mapName, img,
             nodeName = element.nodeName.toLowerCase();
         if ("area" === nodeName) {
             map = element.parentNode;
             mapName = map.name;
             if (!element.href || !mapName || map.nodeName.toLowerCase() !== "map") {
                 return false;
             }
             img = $("img[usemap=#" + mapName + "]")[0];
             return !!img && visible(img);
         }
         return ( /input|select|textarea|button|object/.test(nodeName) ?
                 !element.disabled :
                 "a" === nodeName ?
                 element.href || isTabIndexNotNaN :
                     isTabIndexNotNaN) &&
                 // the element and all of its ancestors must be visible
             visible(element);
     }

     function visible(element) {
         return $.expr.filters.visible(element) && !$(element).parents().andSelf().filter(function () {
                 return $.css(this, "visibility") === "hidden";
             }).length;
     }

     $.extend($.expr[":"], {
         data: $.expr.createPseudo ?
             $.expr.createPseudo(function (dataName) {
                 return function (elem) {
                     return !!$.data(elem, dataName);
                 };
             }) :
             // support: jQuery <1.8
             function (elem, i, match) {
                 return !!$.data(elem, match[3]);
             },

         focusable: function (element) {
             return focusable(element, !isNaN($.attr(element, "tabindex")));
         },

         tabbable: function (element) {
             var tabIndex = $.attr(element, "tabindex"),
                 isTabIndexNaN = isNaN(tabIndex);
             return ( isTabIndexNaN || tabIndex >= 0 ) && focusable(element, !isTabIndexNaN);
         }
     });

// support
     $(function () {
         var body = document.body,
             div = body.appendChild(div = document.createElement("div"));

         // access offsetHeight before setting the style to prevent a layout bug
         // in IE 9 which causes the element to continue to take up space even
         // after it is removed from the DOM (#8026)
         div.offsetHeight;

         $.extend(div.style, {
             minHeight: "100px",
             height: "auto",
             padding: 0,
             borderWidth: 0
         });

         $.support.minHeight = div.offsetHeight === 100;
         $.support.selectstart = "onselectstart" in div;

         // set display to none to avoid a layout bug in IE
         // http://dev.jquery.com/ticket/4014
         body.removeChild(div).style.display = "none";
     });

// support: jQuery <1.8
     if (!$("<a>").outerWidth(1).jquery) {
         $.each(["Width", "Height"], function (i, name) {
             var side = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"],
                 type = name.toLowerCase(),
                 orig = {
                     innerWidth: $.fn.innerWidth,
                     innerHeight: $.fn.innerHeight,
                     outerWidth: $.fn.outerWidth,
                     outerHeight: $.fn.outerHeight
                 };

             function reduce(elem, size, border, margin) {
                 $.each(side, function () {
                     size -= parseFloat($.css(elem, "padding" + this)) || 0;
                     if (border) {
                         size -= parseFloat($.css(elem, "border" + this + "Width")) || 0;
                     }
                     if (margin) {
                         size -= parseFloat($.css(elem, "margin" + this)) || 0;
                     }
                 });
                 return size;
             }

             $.fn["inner" + name] = function (size) {
                 if (size === undefined) {
                     return orig["inner" + name].call(this);
                 }

                 return this.each(function () {
                     $(this).css(type, reduce(this, size) + "px");
                 });
             };

             $.fn["outer" + name] = function (size, margin) {
                 if (typeof size !== "number") {
                     return orig["outer" + name].call(this, size);
                 }

                 return this.each(function () {
                     $(this).css(type, reduce(this, size, true, margin) + "px");
                 });
             };
         });
     }

// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
     if ($("<a>").data("a-b", "a").removeData("a-b").data("a-b")) {
         $.fn.removeData = (function (removeData) {
             return function (key) {
                 if (arguments.length) {
                     return removeData.call(this, $.camelCase(key));
                 } else {
                     return removeData.call(this);
                 }
             };
         })($.fn.removeData);
     }

// deprecated

     (function () {
         var uaMatch = /msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase()) || [];
         $.ui.ie = uaMatch.length ? true : false;
         $.ui.ie6 = parseFloat(uaMatch[1], 10) === 6;
     })();

     $.fn.extend({
         disableSelection: function () {
             return this.bind(( $.support.selectstart ? "selectstart" : "mousedown" ) +
                 ".ui-disableSelection", function (event) {
                 event.preventDefault();
             });
         },

         enableSelection: function () {
             return this.unbind(".ui-disableSelection");
         }
     });

     $.extend($.ui, {
         // $.ui.plugin is deprecated.  Use the proxy pattern instead.
         plugin: {
             add: function (module, option, set) {
                 var i,
                     proto = $.ui[module].prototype;
                 for (i in set) {
                     proto.plugins[i] = proto.plugins[i] || [];
                     proto.plugins[i].push([option, set[i]]);
                 }
             },
             call: function (instance, name, args) {
                 var i,
                     set = instance.plugins[name];
                 if (!set || !instance.element[0].parentNode || instance.element[0].parentNode.nodeType === 11) {
                     return;
                 }

                 for (i = 0; i < set.length; i++) {
                     if (instance.options[set[i][0]]) {
                         set[i][1].apply(instance.element, args);
                     }
                 }
             }
         },

         contains: $.contains,

         // only used by resizable
         hasScroll: function (el, a) {

             //If overflow is hidden, the element might have extra content, but the user wants to hide it
             if ($(el).css("overflow") === "hidden") {
                 return false;
             }

             var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
                 has = false;

             if (el[scroll] > 0) {
                 return true;
             }

             // TODO: determine which cases actually cause this to happen
             // if the element doesn't have the scroll set, see if it's possible to
             // set the scroll
             el[scroll] = 1;
             has = ( el[scroll] > 0 );
             el[scroll] = 0;
             return has;
         },

         // these are odd functions, fix the API or move into individual plugins
         isOverAxis: function (x, reference, size) {
             //Determines when x coordinate is over "b" element axis
             return ( x > reference ) && ( x < ( reference + size ) );
         },
         isOver: function (y, x, top, left, height, width) {
             //Determines when x, y coordinates is over "b" element
             return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
         }
     });

 })(jQuery);